package com.ylr.blog.framework.service;

import com.ylr.blog.framework.entity.BlogEntity;
import com.ylr.base.common.dto.PageDto;
import com.ylr.blog.common.dto.audit_blog.AssignPageEnumDto;
import com.ylr.blog.common.dto.audit_blog.AuditBlogDto;
import com.ylr.user.common.dto.user.UserDto;
import com.ylr.blog.common.vo.audit_blog.AssignVo;
import com.ylr.blog.common.vo.audit_blog.AuditBlogFormVo;
import com.ylr.blog.common.vo.audit_blog.AuditVo;
import com.ylr.blog.common.vo.blog.BlogVo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ylr.blog.framework.entity.AuditBlogEntity;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-05-19 20:35:21
 * className: AuditBlogService
 * version: 1.0
 * description:
 */
public interface AuditBlogService extends IService<AuditBlogEntity> {

    /**
     * 保存待审核博客操作
     * @param blogVo 参数对象
     */
    Long saveAuditBlog(BlogVo blogVo);

    /**
     * 保存待审核博客操作
     * @param blog 博客对象
     */
    Long addAuditBlog(BlogEntity blog);

    /**
     * 分页查询待审核博客操作
     * @param auditBlogFormVo 参数对象
     * @return 待审核博客分页数据
     */
    PageDto<AuditBlogDto> pageAuditBlogList(AuditBlogFormVo auditBlogFormVo);

    /**
     * 获取最新版本的待审核博客操作
     * @param blogId 博客主机那
     * @return 审核博客对象
     */
    AuditBlogEntity getLastOne(Long blogId);

    /**
     * 获取下一个版本号操作
     * @param blogId 博客主键
     * @return 版本号数值
     */
    Integer nextVersion(Long blogId);

    /**
     * 获取待审核博客操作
     * @param id 主键
     * @return 待审核博客对象
     */
    AuditBlogEntity getAuditBlog(Long id);

    /**
     * 获取被分单用户操作
     * @param id 被分单用户主键
     * @return 被分单用户对象
     */
    UserDto getAuditUser(Long id);

    /**
     * 获取待审核博客分单页面枚举操作
     */
    AssignPageEnumDto getAssignPageEnum();

    /**
     * 博客审核分单操作
     * @param assignVo 参数对象
     */
    void assignAudit(AssignVo assignVo);

    /**
     * 终止博客审核操作
     * @param id 主键
     */
    void stopAuditBlog(Long id);

    /**
     * 提交博客审核结果操作
     * @param auditVo 参数对象
     */
    void commitAudit(AuditVo auditVo);

//    /**
//     * 删除待审核博客操作
//     * @param id 主键
//     */
//    void deleteAuditBlog(Long id);

//    /**
//     * 删除待审核博客操作
//     * @param idList 主键列表
//     */
//    void removeAuditBlog(List<Long> idList);

}

